package Question10_6;
public class Line {
private static double epsilon = .0001;
public double slope;
public double intercept;
private boolean infinite_slope = false;
public Line(GraphPoint p, GraphPoint q) {
if (Math.abs(p.x - q.x) > epsilon) { // if x�s are different
slope = (p.y - q.y) / (p.x - q.x); // compute slope
intercept = p.y - slope * p.x; // y intercept from y=mx+b
} else {
infinite_slope = true;
intercept = p.x; // x-intercept, since slope is infinite
}
}
public boolean isEqual(double a, double b) {
return (Math.abs(a - b) < epsilon);
}
public void Print() {
System.out.println("y = " + slope + "x + " + intercept);
}
@Override
public int hashCode() {
int sl = (int)(slope * 1000);
int in = (int)(intercept * 1000);
return sl | in;
}
@Override
public boolean equals(Object o) {
Line l = (Line) o;
if (isEqual(l.slope, slope) && isEqual(l.intercept, intercept)
&& (infinite_slope == l.infinite_slope)) {
return true;
}
return false;
}
}